As an installation method of a disk array apparatus, RAID (Redundant Arrays of Inexpensive Disks) is known. Based on a technology defined as RAID1 to RAID5, a RAID system adds redundancy data (parity) to data written over a plurality of magnetic disks and prevents data loss caused by a fault of a single magnetic disk. Furthermore, a technology called RAID6 or double parity (multiple redundant disk array apparatus) is proposed. The technology prevents, using a plurality of redundant disks, data loss caused by faults of a plurality of magnetic disks.
In such a disk array apparatus, when the magnetic disk returns a normal response in reply to a write process to a single magnetic disk, the disk array apparatus judges that the write process ends normally. However, when a fault occurs on the magnetic disk, it may cause an unfinished write failure in which data is not written on the medium of the magnetic disk even if the normal response is returned. When the unfinished write failure occurs, old data before write operation is read out in a read process from the magnetic disk. However, in this case, the read process itself ends normally.
As a detection method of the unfinished write failure, the following method is known. The method adds a redundancy code such as an assurance code or a cyclic code (CRC (Cyclic Redundancy Check)) to the data and the redundancy data and compares the data or the redundancy data with the redundancy code when reading the data or the redundancy data.
For example, a disk array apparatus of Japanese Patent Application Laid-Open No. 2006-107311 calculates an assurance code for each of data and redundancy data when writing the data, and saves the assurance code on a different disk from the disk on which the data or the redundancy data is written. And when data is read from the disk, the disk array apparatus detects that an error has occurred in the data by using the assurance code.
Further, as another related technology, in Japanese Patent Application Laid-Open No. 2007-317271, a data storage apparatus using a Reed-Solomon code operable on Galois extension field as CRC is disclosed.